package com.song.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Base64;
import java.util.Date;
import java.util.Map;

import static io.jsonwebtoken.Jwts.SIG.HS256;

public class JwtUtil {
    //生成令牌的方法
    public static String generateJwt(String secretKey, long ttlMillis, Map<String, Object> claims){
        // 将字符串密钥转换为 Base64 编码
        SecretKey key = new SecretKeySpec(secretKey.getBytes(), "HmacSHA256");
        return Jwts.builder()
                .signWith(key,HS256)  // 使用 SecretKey
                .claims()
                .add(claims)
                .and()
                .expiration(new Date(System.currentTimeMillis() + ttlMillis))
                .compact();
    }
    //解析令牌的方法
    public static Claims parseJwt(String token, String secretKey){
        //解析令牌
        SecretKey key = new SecretKeySpec(secretKey.getBytes(), "HmacSHA256");
        return Jwts.parser()
                .verifyWith(key)
                .build()
                .parseSignedClaims(token)
                .getPayload();
    }

}
